
package org.icnmasjid.member.dao.hibernate;

import java.util.List;
import java.util.Map;

import org.icnmasjid.member.dao.IcnDataDao;
import org.icnmasjid.member.model.IcnData;
import org.springframework.orm.ObjectRetrievalFailureException;

public class IcnDataDaoHibernate extends BaseDaoHibernate implements IcnDataDao {

    /**
     * @see org.icnmasjid.member.dao.IcnDataDao#getIcnDatas(org.icnmasjid.member.model.IcnData)
     */
    public List getIcnDatas(final IcnData icnData) {
    	if ( icnData != null ) {
    		return getHibernateTemplate().findByExample(icnData);
    	} else {
    		return getHibernateTemplate().find("from IcnData");
    	}
    }

    public List getNonDuplicateIcnData() {
    	return getHibernateTemplate().find("from IcnData where duplicateId is null");
    }

    /**
     * @see org.icnmasjid.member.dao.IcnDataDao#getIcnData(Integer icnDataId)
     */
    public IcnData getIcnData(final Integer icnDataId) {
        IcnData icnData = (IcnData) getHibernateTemplate().get(IcnData.class, icnDataId);
        if (icnData == null) {
            log.warn("uh oh, icnData with icnDataId '" + icnDataId + "' not found...");
            throw new ObjectRetrievalFailureException(IcnData.class, icnDataId);
        }

        return icnData;
    }

    /**
     * @see org.icnmasjid.member.dao.IcnDataDao#saveIcnData(IcnData icnData)
     */
    public void saveIcnData(final IcnData icnData) {
        getHibernateTemplate().saveOrUpdate(icnData);
    }

    /**
     * @see org.icnmasjid.member.dao.IcnDataDao#removeIcnData(Integer icnDataId)
     */
    public void removeIcnData(final Integer icnDataId) {
        getHibernateTemplate().delete(getIcnData(icnDataId));
    }

}
